package com.pattern.composite;



import java.util.ArrayList;
import java.util.List;

/**
 * @Description: 组合模式，，，树枝构架
 * @Author: whp
 * @Date: 2021-02-07 14:40
 */
public class Composite extends Component{
    private List<Component> children=new ArrayList<Component>();
    @Override
    public void add(Component comopent) {
        children.add(comopent);
    }

    @Override
    public void remove(Component comopent) {
        children.remove(comopent);
    }

    @Override
    public void display(int level) {
    }

    @Override
    public Component getChild(int i) {
        return children.get(i);
    }

    @Override
    public void operation() {
        for ( Component component:children){
            component.operation();
        }
    }
    // 3个重要组成部分
    // 1.1 组合部件 component  它是一个抽象角色，为要组合的对象提供统一的接口。
            //1.11定义有枝节点的行为，用来存储部件，实现在Component接口中的有关操作，如增加（Add）和删除（Remove）
    // 1.2.叶子 Leat  在组合中表示子节点对象，叶子节点不能有子节点。
    // 1.3 合成部件 Composite  定义有枝节点的行为，用来存储部件，实现在Component接口中的有关操作，如增加（Add）和删除（Remove）



}
